package org.japo.java.entities;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;

/**
 *
 * @author José A. Pacheco Ondoño - joanpaon@gmail.com
 */
public class Modulo {

    // Identificadores de propiedades
    public static final String PROP_ID = "id";
    public static final String PROP_ACRONIMO = "acronimo";
    public static final String PROP_NOMBRE = "nombre";
    public static final String PROP_CODIGO = "codigo";
    public static final String PROP_HORAS = "horas";
    public static final String PROP_CURSO1 = "curso1";
    public static final String PROP_CURSO2 = "curso2";

    // Propiedades
    private String id;
    private String acronimo;
    private String nombre;
    private String codigo;
    private int horas;
    private boolean curso1;
    private boolean curso2;

    // Soporte para cambio de propiedad
    private final transient PropertyChangeSupport propertyChangeSupport =
            new java.beans.PropertyChangeSupport(this);

    public Modulo() {
        id = "0";
        acronimo = "N/D";
        nombre = "N/D";
        codigo = "N/D";
        horas = 0;
        curso1 = true;
        curso2 = false;
    }

    public Modulo(String id, String acronimo, String nombre, String codigo, 
            int horas, boolean curso1, boolean curso2) {
        this.id = id;
        this.acronimo = acronimo;
        this.nombre = nombre;
        this.codigo = codigo;
        this.horas = horas;
        this.curso1 = curso1;
        this.curso2 = curso2;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        java.lang.String oldId = this.id;
        this.id = id;
        propertyChangeSupport.firePropertyChange(PROP_ID, oldId, id);
    }

    public String getAcronimo() {
        return acronimo;
    }

    public void setAcronimo(String acronimo) {
        java.lang.String oldAcronimo = this.acronimo;
        this.acronimo = acronimo;
        propertyChangeSupport.firePropertyChange(PROP_ACRONIMO, oldAcronimo, acronimo);
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        java.lang.String oldNombre = this.nombre;
        this.nombre = nombre;
        propertyChangeSupport.firePropertyChange(PROP_NOMBRE, oldNombre, nombre);
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        java.lang.String oldCodigo = this.codigo;
        this.codigo = codigo;
        propertyChangeSupport.firePropertyChange(PROP_CODIGO, oldCodigo, codigo);
    }

    public int getHoras() {
        return horas;
    }

    public void setHoras(int horas) {
        int oldHoras = this.horas;
        this.horas = horas;
        propertyChangeSupport.firePropertyChange(PROP_HORAS, oldHoras, horas);
    }

    public boolean isCurso1() {
        return curso1;
    }

    public void setCurso1(boolean curso1) {
        boolean oldCurso1 = this.curso1;
        this.curso1 = curso1;
        propertyChangeSupport.firePropertyChange(PROP_CURSO1, oldCurso1, curso1);
    }

    public boolean isCurso2() {
        return curso2;
    }

    public void setCurso2(boolean curso2) {
        boolean oldCurso2 = this.curso2;
        this.curso2 = curso2;
        propertyChangeSupport.firePropertyChange(PROP_CURSO2, oldCurso2, curso2);
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.removePropertyChangeListener(listener);
    }
}
